﻿using System.Windows.Forms;

namespace NetworkSupervisor
{
    /// <summary>
    /// 扩展方法    
    /// </summary>
    public static class Extensions
    {
        /// <summary>
        /// 后台线程刷新前台窗口控件，使用方法：this.UIThread(()=>Func(p1,p2,p3));
        /// </summary>
        /// <param name="form"></param>
        /// <param name="code">如：()=>Func(p1,p2,p3)或delegete{Func(p1,p2,p3);}</param>
        public static void UIThread(this Form form, MethodInvoker code)
        {
            if (form.InvokeRequired)
            {
                form.Invoke(code);

                return;
            }

            code.Invoke();
        }

        /// <summary>
        /// 后台线程刷新前台窗口控件，使用方法：this.UIThreadBeginInvoke(()=>Func(p1,p2,p3));
        /// </summary>
        /// <param name="form"></param>
        /// <param name="code">如：()=>Func(p1,p2,p3)或delegete{Func(p1,p2,p3);}</param>
        public static void UIThreadBeginInvoke(this Form form, MethodInvoker code)
        {
            if (form.InvokeRequired)
            {
                form.BeginInvoke(code);

                return;
            }

            code.Invoke();
        }
    }
}